home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C / Games / Pentominoes 2.0 / Shell ƒ / about.c next >
Encoding:
Text File  |  1995-07-15  |  8.6 KB  |  142 lines  |  [TEXT/MMCC]

  1. tleWidth=StringWidth(titleStr);
  2.     MoveTo((GetWindowWidth(theWindow)-titleWidth)/2, DEAD_SPACE_V+18);
  3.     DrawString(titleStr);
  4.     SetTheDrawingFont(geneva, 9, 0, notSrcCopy);
  5.     versionWidth=StringWidth(gVersionStr);
  6.     MoveTo((GetWindowWidth(theWindow)-versionWidth)/2, DEAD_SPACE_V*2+15+10);
  7.     DrawString(gVersionStr);
  8.     UseDefaultDrawingFont();
  9. }
  10.  
  11. void CopybitsTheAboutWindow(WindowRef theWindow, WindowRef offscreenWindowRef)
  12. {
  13.     RgnHandle        logoRgn, copyRgn;
  14.     Rect            logoRect;
  15.     
  16.     copyRgn=NewRgn();
  17.     logoRgn=NewRgn();
  18.     RectRgn(copyRgn, &(theWindow->portRect));
  19.     logoRect=gLogoComboPtr->destRect;
  20.     RectRgn(logoRgn, &logoRect);
  21.     DiffRgn(copyRgn, logoRgn, copyRgn);
  22.     SetEmptyRgn(logoRgn);
  23.     logoRect.right=GetWindowWidth(theWindow)-DEAD_SPACE_H;
  24.     logoRect.left=logoRect.right-kLogoWidth;
  25.     RectRgn(logoRgn, &logoRect);
  26.     DiffRgn(copyRgn, logoRgn, copyRgn);
  27.     
  28.     CopyBits(    &(offscreenWindowRef->portBits),
  29.                 &(theWindow->portBits),
  30.                 &(theWindow->portRect),
  31.                 &(theWindow->portRect), 0, copyRgn);
  32.     
  33.     DrawTheLogos(theWindow, FALSE, GetWindowDepth(theWindow));
  34.     CopybitsCombo(gTextComboPtr);
  35.     
  36.     DisposeRgn(copyRgn);
  37.     DisposeRgn(logoRgn);
  38. }
  39.  
  40. static    void DrawTheLogos(WindowRef theWindow, Boolean doFade, short theDepth)
  41. {
  42.     unsigned short    j, numRows, startJ;
  43.     RGBColor        patternColor;
  44.     Rect            logoRect1, logoRect2, sourceRect;
  45.     PixPatHandle    backgroundppat;
  46.     
  47.     logoRect1=logoRect2=gLogoComboPtr->destRect;
  48.     logoRect2.right=GetWindowWidth(theWindow)-DEAD_SPACE_H;
  49.     logoRect2.left=logoRect2.right-kLogoWidth;
  50.     sourceRect=gLogoComboPtr->sourceRect;
  51.     
  52.     if (theDepth>=4)
  53.     {
  54.         numRows=kLogoHeight;
  55.         patternColor.red=patternColor.green=0;
  56.         if (theDepth>=8)
  57.             startJ=doFade ? 0 : 64;
  58.         else
  59.             startJ=64;
  60.             
  61.         for (j=startJ; j<=64; j++)
  62.         {
  63.             if (j<64)
  64.                 patternColor.blue=j*1024;
  65.             else
  66.                 patternColor.blue=65535;
  67.             SetPortToOffscreenWindow(gLogoComboPtr->patternWorldPtr);
  68.             backgroundppat=NewPixPat();
  69.             MakeRGBPat(backgroundppat, &patternColor);
  70.             FillCRect(&sourceRect, backgroundppat);
  71.             DisposePixPat(backgroundppat);
  72.             SetPortToOnscreenWindow(theWindow, gLogoComboPtr->patternWorldPtr);
  73.             CopybitsCombo(gLogoComboPtr);
  74.             gLogoComboPtr->destRect=logoRect2;
  75.             CopybitsCombo(gLogoComboPtr);
  76.             gLogoComboPtr->destRect=logoRect1;
  77.         }
  78.     }
  79.     else
  80.     {
  81.         SetPortToOffscreenWindow(gLogoComboPtr->patternWorldPtr);
  82.         EraseRect(&sourceRect);
  83.         SetPortToOnscreenWindow(theWindow, gLogoComboPtr->patternWorldPtr);
  84.         CopybitsCombo(gLogoComboPtr);
  85.         gLogoComboPtr->destRect=logoRect2;
  86.         CopybitsCombo(gLogoComboPtr);
  87.         gLogoComboPtr->destRect=logoRect1;
  88.     }
  89. }
  90.  
  91. static void DrawTheTextPattern(WindowRef theWindow, MyOffscreenComboPtr offscreenComboPtr,
  92.     short theDepth)
  93. {
  94.     short            i;
  95.     short            WIDTH;
  96.     RGBColor        *theColor;
  97.     Rect            sourceRect;
  98.     
  99.     WIDTH=offscreenComboPtr->sourceRect.right-offscreenComboPtr->sourceRect.left;
  100.     sourceRect=offscreenComboPtr->sourceRect;
  101.     SetPortToOffscreenWindow(offscreenComboPtr->patternWorldPtr);
  102.     
  103.     if (theDepth>=8)
  104.     {
  105.         theColor=(RGBColor*)NewPtr(sizeof(RGBColor)*WIDTH);
  106.         for (i=0; i<64; i++)
  107.         {
  108.             theColor[i].red=i*1024;
  109.             theColor[i].green=theColor[i].blue=0;
  110.         }
  111.         for (i=64; i<WIDTH-64; i++)
  112.         {
  113.             theColor[i].red=65535;
  114.             theColor[i].green=theColor[i].blue=0;
  115.         }
  116.         for (i=WIDTH-64; i<WIDTH; i++)
  117.         {
  118.             theColor[i].red=theColor[WIDTH-i-1].red;
  119.             theColor[i].green=theColor[i].blue=0;
  120.         }
  121.         for (i=0; i<WIDTH; i++)
  122.         {
  123.             MoveTo(i, 0);
  124.             RGBForeColor(&theColor[i]);
  125.             Line(0, kTextHeight);
  126.         }
  127.         DisposePtr((Ptr)theColor);
  128.     }
  129.     else if (theDepth==4)
  130.     {
  131.         ForeColor(redColor);
  132.         PaintRect(&sourceRect);
  133.         ForeColor(blackColor);
  134.     }
  135.     else
  136.     {
  137.         EraseRect(&sourceRect);
  138.     }
  139.     
  140.     SetPortToOnscreenWindow(theWindow, offscreenComboPtr->patternWorldPtr);
  141. }
  142.